package liecai_class.day03;

/**
 * 链表
 * 链表是一种数据结构，
 * 它是由一系列节点组成的，每个节点包含两部分，一部分是数据，另一部分是指向下一个节点的指针
 * 链表的第一个节点称为头节点，最后一个节点称为尾节点
 * 链表的优点是：插入和删除元素的效率很高，只需要改变指针的指向即可
 * 链表的缺点是：查询效率很低，因为链表中的元素并不是连续存储的，所以不能通过下标来访问元素
 * 链表的应用场景：适合插入和删除操作比较多的场景，比如说编辑器中的撤销和恢复功能
 *
 *  链表的分类：单向链表、双向链表、循环链表
 *  单向链表：每个节点只有一个指针，指向下一个节点
 *  双向链表：每个节点有两个指针，一个指向上一个节点，一个指向下一个节点
 *  循环链表：尾节点的指针指向头节点
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        MySingleList<Integer> msl = new MySingleList<Integer>(1,2,3,4,5);
        //System.out.println(msl);
        //System.out.println(msl.get(3));

//        for(int i =0;i<msl.size();i++){
//            System.out.println(msl.get(i));
//        }

//        Iterator it = msl.iterator();
//        while(it.hasNext()){
//            System.out.println(it.next());
//        }

//        for(Node<Integer> x : msl){
//            System.out.println(x);
//        }

//        System.out.println(msl.contains(2));
//        System.out.println(msl.contains(-2));
//        System.out.println(msl.contains(222));

//        System.out.println(msl);
//        msl.addFirst(999);
//        System.out.println(msl);

//        System.out.println(msl);
//        msl.addLast(999);
//        System.out.println(msl);

//        msl.addIndex(88,6);
//        System.out.println(msl);

//        System.out.println(msl);
//        msl.remove(3);
//        System.out.println(msl);

        System.out.println(msl);
        msl.update(666,3);
        System.out.println(msl);
    }
}
